package com.jwsoft.manager.core.gateway.controller;

import com.bifang.assistant.common.constants.Validators;
import com.bifang.assistant.common.vo.BaseVO;
import com.bifang.engine.assistant.core.domain.AppResponse;
import com.bifang.engine.protect.core.annotation.Idempotent;
import com.bifang.engine.protect.core.annotation.NoSignCrypto;
import com.github.pagehelper.PageInfo;
import com.jwsoft.manager.common.vo.eduSchoolConfig.SchoolConfigQueryVO;
import com.jwsoft.manager.common.vo.eduSchoolConfig.SchoolConfigVO;
import com.jwsoft.manager.common.vo.eduStudentEnroll.*;
import com.jwsoft.manager.common.vo.eduStudentEnrollPre.EduStudentEnrollPreKeyVO;
import com.jwsoft.manager.common.vo.eduStudentEnrollPre.EduStudentEnrollPreVO;
import com.jwsoft.manager.core.integration.EduStudentEnrollIntegration;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
 * 学生注册表网关
 *
 * @author wangtao
 */
@RestController
@RequestMapping(value = "/doc/api")
@Tag(name = "学生正式报名管理", description = "学生正式报名管理")
public class EduStudentEnrollController {

    @Autowired
    public EduStudentEnrollIntegration eduStudentEnrollIntegration;

    @Operation(summary = "学生正式报名管理分页查询",description = "学生正式报名管理分页查询")
    @PostMapping(value = "/eduStudentEnroll0001", produces = "application/json;charset=UTF-8")
    public AppResponse<PageInfo<EduStudentEnrollVO>> getList(@RequestBody @Validated EduStudentEnrollQueryVO vo) {
        return AppResponse.successData(eduStudentEnrollIntegration.getList(vo));
    }

    @Operation(summary = "学生报名撤销分页查询-东阳模式",description = "学生报名撤销分页查询-东阳模式")
    @PostMapping(value = "/eduStudentEnroll0065", produces = "application/json;charset=UTF-8")
    public AppResponse<PageInfo<EduStudentEnrollVO>> getQuashList(@RequestBody @Validated EduStudentEnrollQueryVO vo) {
        return AppResponse.successData(eduStudentEnrollIntegration.getQuashList(vo));
    }

    @Operation(summary = "学生正式报名管理根据主键查询详情",description = "学生正式报名管理根据主键查询详情")
    @PostMapping(value = "/eduStudentEnroll0002", produces = "application/json;charset=UTF-8")
    public AppResponse<EduStudentEnrollVO> getById(@RequestBody @Validated EduStudentEnrollKeyVO vo) {
        return AppResponse.successData(eduStudentEnrollIntegration.getById(vo));
    }
    @Operation(summary = "家长端查询可报名的人员信息",description = "家长端查询可报名的人员信息")
    @PostMapping(value = "/eduStudentEnroll0023", produces = "application/json;charset=UTF-8")
    public AppResponse<List<BmStudentVO>> getPreListByToken(@RequestBody @Validated BmQueryVO vo) {
        return AppResponse.successData(eduStudentEnrollIntegration.getPreListByToken(vo));
    }

    @Operation(summary = "家长端查询可报名的人员信息",description = "家长端查询可报名的人员信息")
    @PostMapping(value = "/eduStudentEnroll0028", produces = "application/json;charset=UTF-8")
    public AppResponse<EduStudentEnrollPreVO> getBeforeByPreId(@RequestBody @Validated EduStudentEnrollPreKeyVO vo) {
        return AppResponse.successData(eduStudentEnrollIntegration.getBeforeByPreId(vo));
    }

    @Operation(summary = "家长端查询可报名的人员信息批量", description = "家长端查询可报名的人员信息批量")
    @PostMapping(value = "/eduStudentEnroll0059", produces = "application/json;charset=UTF-8")
    public AppResponse<List<EduStudentEnrollPreVO>> getBeforeBatch(@RequestBody @Validated BmQueryVO vo) {
        return AppResponse.successData(eduStudentEnrollIntegration.getBeforeBatch(vo));
    }
    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "学生正式报名管理线下录入报名",description = "学生正式报名管理线下录入报名")
    @PostMapping(value = "/eduStudentEnroll0004", produces = "application/json;charset=UTF-8")
    public AppResponse<SaveStudentEnrollVO> add(@RequestBody @Validated(value = {Validators.Add.class}) SaveStudentEnrollVO vo) {
        return AppResponse.successData(eduStudentEnrollIntegration.add(vo));
    }
    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "家长端义务段正式报名保存",description = "家长端义务段正式报名保存")
    @PostMapping(value = "/eduStudentEnroll0019", produces = "application/json;charset=UTF-8")
    public AppResponse<SaveStudentEnrollVO> saveEnrollApp(@RequestBody @Validated(value = {Validators.Add.class}) SaveStudentEnrollVO vo) {
        return AppResponse.successData(eduStudentEnrollIntegration.saveEnrollApp(vo));
    }
    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "学生正式报名管理修改",description = "学生正式报名管理修改")
    @PostMapping(value = "/eduStudentEnroll0005", produces = "application/json;charset=UTF-8")
    public AppResponse<EduStudentEnrollVO> edit(@RequestBody @Validated(value = {Validators.Edit.class}) EduStudentEnrollVO vo) {
        return AppResponse.successData(eduStudentEnrollIntegration.edit(vo));
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "学生正式报名管理删除",description = "学生正式报名管理删除")
    @PostMapping(value = "/eduStudentEnroll0006", produces = "application/json;charset=UTF-8")
    public AppResponse del(@RequestBody @Validated EduStudentEnrollKeyVO vo) {
        eduStudentEnrollIntegration.del(vo);
        return AppResponse.successMsg("删除成功！");
    }
    @Operation(summary = "判断登录用户是否学生",description = "判断登录用户是否学生")
    @PostMapping(value = "/eduStudentEnroll0007", produces = "application/json;charset=UTF-8")
    public AppResponse UserIsStudent(@RequestBody BaseVO vo) {
        return AppResponse.successData(eduStudentEnrollIntegration.UserIsStudent(vo));
    }
    @Operation(summary = "判断是否可以摇号绑定",description = "判断是否可以摇号绑定")
    @PostMapping(value = "/eduStudentEnroll0049", produces = "application/json;charset=UTF-8")
    public AppResponse<List<BindEnrollVO>> checkBind(@RequestBody BindEnrollQueryVO vo) {
        return AppResponse.successData(eduStudentEnrollIntegration.checkBind(vo));
    }
    @Operation(summary = "我的报名查询",description = "我的报名查询")
    @PostMapping(value = "/eduStudentEnroll0008", produces = "application/json;charset=UTF-8")
    public AppResponse<List<MyYearEnrollVO>> getMyEnrollInfo(@RequestBody MyEnrollQueryVO vo) {
        return AppResponse.successData(eduStudentEnrollIntegration.getMyEnrollInfo(vo));
    }

    @PostMapping(value = "/eduStudentEnroll0009", produces = "application/json;charset=UTF-8")
    @Operation(summary = "查询报名情况",description = "查询报名情况")
    public AppResponse<Boolean> checkEnroll(@RequestBody YjbmQueryVO vo) {
        return AppResponse.successData(eduStudentEnrollIntegration.checkEnroll(vo));
    }

    @PostMapping(value = "/eduStudentEnroll0010", produces = "application/json;charset=UTF-8")
    @Operation(summary = "校验是否可以摇号导出",description = "校验是否可以摇号导出")
    public AppResponse checkYhExp(@RequestBody EduStudentEnrollQueryVO vo) {
        eduStudentEnrollIntegration.checkYhExp(vo);
        return AppResponse.success();
    }

    @Idempotent(expire="PT10S") //2秒内防重复提交
    @Operation(summary = "义务教育民转公报名摇号信息导出",description = "义务教育民转公报名摇号信息导出")
    @PostMapping(value = "/eduStudentEnroll0011", produces = "application/json;charset=UTF-8")
    @NoSignCrypto
    public void exportYwMzgApplyInfo(@RequestBody @Validated EduStudentEnrollQueryVO vo, HttpServletResponse response) {
        eduStudentEnrollIntegration.exportYwMzgApplyInfo(vo,response);
    }


    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育民转公摇号信息导入",description = "义务教育民转公摇号信息导入")
    @PostMapping(value = "/eduStudentEnroll0012", produces = "application/json;charset=UTF-8")
    public AppResponse<YwMbApplyFileVO> inputYwMzgApplyInfo(
            YwMbApplyFileVO vo, @RequestParam("file") MultipartFile file) throws IOException {
        return AppResponse.successData(eduStudentEnrollIntegration.inputYwMzgApplyInfo(vo, file));
    }


    @Operation(summary = "获取义务教育报名单个明细",description = "获取义务教育报名单个明细")
    @PostMapping(value = "/eduStudentEnroll0013", produces = "application/json;charset=UTF-8")
    public AppResponse<EduStudentEnrollVO> getYwApplyDetail(@RequestBody @Validated EduStudentEnrollKeyVO vo) {
        return AppResponse.successData(eduStudentEnrollIntegration.getYwApplyDetail(vo));
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育报名一键退回到待审核",description = "义务教育报名一键退回到待审核")
    @PostMapping(value = "/eduStudentEnroll0014", produces = "application/json;charset=UTF-8")
    public AppResponse ywApplyBackAuth(@RequestBody @Validated(value = {Validators.Edit.class}) EduStudentEnrollKeyVO vo) {
        eduStudentEnrollIntegration.backAuth(vo);
        return AppResponse.success();
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育报名退回",description = "义务教育报名退回")
    @PostMapping(value = "/eduStudentEnroll0015", produces = "application/json;charset=UTF-8")
    public AppResponse ywApplyBack(@RequestBody @Validated(value = {Validators.Edit.class}) EduStudentEnrollKeyVO vo) {
        eduStudentEnrollIntegration.ywApplyBack(vo);
        return AppResponse.success();
    }
    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "家长端义务教育报名撤销",description = "家长端义务教育模拟报名撤销")
    @PostMapping(value = "/eduStudentEnroll0063", produces = "application/json;charset=UTF-8")
    public AppResponse ywApplyBackApp(@RequestBody @Validated(value = {Validators.Edit.class}) EduStudentEnrollKeyVO vo) {
        eduStudentEnrollIntegration.ywApplyBackApp(vo);
        return AppResponse.success();
    }
    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育报名修改报名状态",description = "义务教育报名修改报名状态")
    @PostMapping(value = "/eduStudentEnroll0016", produces = "application/json;charset=UTF-8")
    public AppResponse updateEnrollStatus(@RequestBody @Validated(value = {Validators.Edit.class}) UpdateEnrollStatusVO vo) {
        eduStudentEnrollIntegration.updateEnrollStatus(vo);
        return AppResponse.success();
    }

    @Operation(summary = "义务教育报名人员查询(根据身份证)",description = "义务教育报名人员查询(根据身份证)")
    @PostMapping(value = "/eduStudentEnroll0017", produces = "application/json;charset=UTF-8")
    public AppResponse<List<EduStudentEnrollVO>> getYwApplyInfoByIdcard(@RequestBody @Validated EduStudentEnrollQueryVO vo) {
        return AppResponse.successData(eduStudentEnrollIntegration.getYwApplyInfoByIdcard(vo));
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育报名信息导出",description = "义务教育报名信息导出")
    @PostMapping(value = "/eduStudentEnroll0018", produces = "application/json;charset=UTF-8")
    @NoSignCrypto
    public void exportSchoolInfo(@RequestBody @Validated EduStudentEnrollQueryVO vo, HttpServletResponse response) {
        eduStudentEnrollIntegration.exportYwApplyInfo(vo,response);
    }

    @Operation(summary = "义务教育报名人数信息查询",description = "义务教育报名人数信息查询")
    @PostMapping(value = "/eduStudentEnroll0020", produces = "application/json;charset=UTF-8")
    public AppResponse<StudentEnrollCntVO> queryBmCnt(@RequestBody @Validated EduStudentEnrollQueryVO vo) {
        return AppResponse.successData(eduStudentEnrollIntegration.queryBmCnt(vo));
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育民转公批量录取",description = "义务教育民转公批量录取")
    @PostMapping(value = "/eduStudentEnroll0021", produces = "application/json;charset=UTF-8")
    public AppResponse batchMzgAdmit(@RequestBody @Validated StudentEnrollBatchVO vo) {
        eduStudentEnrollIntegration.batchMzgAdmit(vo);
        return AppResponse.success();
    }



    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育民转公停止招生",description = "义务教育民转公停止招生")
    @PostMapping(value = "/eduStudentEnroll0024", produces = "application/json;charset=UTF-8")
    public AppResponse ywMzgStop(@RequestBody @Validated StudentEnrollStopVO vo) {
        eduStudentEnrollIntegration.ywMzgStop(vo);
        return AppResponse.success();
    }

    @Operation(summary = "获取义务教育民转公报名信息",description = "获取义务教育民转公报名信息")
    @PostMapping(value = "/eduStudentEnroll0025", produces = "application/json;charset=UTF-8")
    public AppResponse<PageInfo<EduStudentEnrollVO>> getYwMzgApplyInfo(@RequestBody @Validated EduStudentEnrollQueryVO vo) {
        return AppResponse.successData(eduStudentEnrollIntegration.getYwMzgApplyInfo(vo));
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育民转公审核",description = "义务教育民转公审核")
    @PostMapping(value = "/eduStudentEnroll0026", produces = "application/json;charset=UTF-8")
    public AppResponse ywMzgAudit(@RequestBody @Validated StudentEnrollSaveVO vo) {
        eduStudentEnrollIntegration.ywMzgAudit(vo);
        return AppResponse.success();
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育民转公录取",description = "义务教育民转公录取")
    @PostMapping(value = "/eduStudentEnroll0027", produces = "application/json;charset=UTF-8")
    public AppResponse ywMzgApply(@RequestBody @Validated StudentEnrollSaveVO vo) {
        eduStudentEnrollIntegration.ywMzgApply(vo);
        return AppResponse.success();
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育民办第一志愿报名摇号信息导出",description = "义务教育民办第一志愿报名摇号信息导出")
    @PostMapping(value = "/eduStudentEnroll0029", produces = "application/json;charset=UTF-8")
    @NoSignCrypto
    public void exportYwMbApplyInfo(@RequestBody @Validated EduStudentEnrollQueryVO vo, HttpServletResponse response) {
        eduStudentEnrollIntegration.exportYwMbApplyInfo(vo,response);
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育民办第一志愿摇号信息导入",description = "义务教育民办第一志愿摇号信息导入")
    @PostMapping(value = "/eduStudentEnroll0030", produces = "application/json;charset=UTF-8")
    @NoSignCrypto
    public AppResponse<YwMbApplyFileVO> inputYwMbApplyInfo(
            YwMbApplyFileVO vo, @RequestParam("file") MultipartFile file) throws IOException {
        return AppResponse.successData(eduStudentEnrollIntegration.inputYwMbApplyInfo(vo, file));
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育民办第一志愿批量录取",description = "义务教育民办第一志愿批量录取")
    @PostMapping(value = "/eduStudentEnroll0022", produces = "application/json;charset=UTF-8")
    public AppResponse batchAdmit(@RequestBody @Validated StudentEnrollBatchVO vo) {
        eduStudentEnrollIntegration.batchAdmit(vo);
        return AppResponse.success();
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育民办第一志愿停止招生",description = "义务教育民办第一志愿停止招生")
    @PostMapping(value = "/eduStudentEnroll0031", produces = "application/json;charset=UTF-8")
    public AppResponse ywMbStop(@RequestBody @Validated StudentEnrollStopVO vo) {
        eduStudentEnrollIntegration.ywMbStop(vo);
        return AppResponse.success();
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育民办第一志愿审核",description = "义务教育民办第一志愿审核")
    @PostMapping(value = "/eduStudentEnroll0032", produces = "application/json;charset=UTF-8")
    public AppResponse ywMbAudit(@RequestBody @Validated StudentEnrollSaveVO vo) {
        eduStudentEnrollIntegration.ywMbAudit(vo);
        return AppResponse.success();
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育民办第一志愿录取",description = "义务教育民办第一志愿录取")
    @PostMapping(value = "/eduStudentEnroll0033", produces = "application/json;charset=UTF-8")
    public AppResponse ywMbApply(@RequestBody @Validated StudentEnrollSaveVO vo) {
        eduStudentEnrollIntegration.ywMbApply(vo);
        return AppResponse.success();
    }

    @Operation(summary = "获取义务教育民办第一志愿报名信息",description = "获取义务教育民办第一志愿报名信息")
    @PostMapping(value = "/eduStudentEnroll0034", produces = "application/json;charset=UTF-8")
    public AppResponse<PageInfo<EduStudentEnrollVO>> getYwMbApplyInfo(@RequestBody @Validated EduStudentEnrollQueryVO vo) {
        return AppResponse.successData(eduStudentEnrollIntegration.getYwMbApplyInfo(vo));
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育民办第二志愿报名摇号信息导出",description = "义务教育民办第二志愿报名摇号信息导出")
    @PostMapping(value = "/eduStudentEnroll0035", produces = "application/json;charset=UTF-8")
    @NoSignCrypto
    public void exportYwMbApplyInfo2(@RequestBody @Validated EduStudentEnrollQueryVO vo, HttpServletResponse response) {
        eduStudentEnrollIntegration.exportYwMbApplyInfo2(vo,response);
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育民办第二志愿摇号信息导入",description = "义务教育民办第二志愿摇号信息导入")
    @PostMapping(value = "/eduStudentEnroll0036", produces = "application/json;charset=UTF-8")
    public AppResponse<YwMbApplyFileVO> inputYwMbApplyInfo2(
            YwMbApplyFileVO vo, @RequestParam("file") MultipartFile file) throws IOException {
        return AppResponse.successData(eduStudentEnrollIntegration.inputYwMbApplyInfo2(vo, file));
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育民办第二志愿批量录取",description = "义务教育民办第二志愿批量录取")
    @PostMapping(value = "/eduStudentEnroll0037", produces = "application/json;charset=UTF-8")
    public AppResponse batchAdmit2(@RequestBody @Validated StudentEnrollBatchVO vo) {
        eduStudentEnrollIntegration.batchAdmit2(vo);
        return AppResponse.success();
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育民办第二志愿停止招生",description = "义务教育民办第二志愿停止招生")
    @PostMapping(value = "/eduStudentEnroll0038", produces = "application/json;charset=UTF-8")
    public AppResponse ywMbStop2(@RequestBody @Validated StudentEnrollStopVO vo) {
        eduStudentEnrollIntegration.ywMbStop2(vo);
        return AppResponse.success();
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育民办第二志愿审核",description = "义务教育民办第二志愿审核")
    @PostMapping(value = "/eduStudentEnroll0039", produces = "application/json;charset=UTF-8")
    public AppResponse ywMbAudit2(@RequestBody @Validated StudentEnrollSaveVO vo) {
        eduStudentEnrollIntegration.ywMbAudit2(vo);
        return AppResponse.success();
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育民办第二志愿录取",description = "义务教育民办第二志愿录取")
    @PostMapping(value = "/eduStudentEnroll0040", produces = "application/json;charset=UTF-8")
    public AppResponse ywMbApply2(@RequestBody @Validated StudentEnrollSaveVO vo) {
        eduStudentEnrollIntegration.ywMbApply2(vo);
        return AppResponse.success();
    }

    @Operation(summary = "获取义务教育民办第二志愿报名信息",description = "获取义务教育民办第二志愿报名信息")
    @PostMapping(value = "/eduStudentEnroll0041", produces = "application/json;charset=UTF-8")
    public AppResponse<PageInfo<EduStudentEnrollVO>> getYwMbApplyInfo2(@RequestBody @Validated EduStudentEnrollQueryVO vo) {
        return AppResponse.successData(eduStudentEnrollIntegration.getYwMbApplyInfo2(vo));
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育民办第三志愿报名摇号信息导出",description = "义务教育民办第三志愿报名摇号信息导出")
    @PostMapping(value = "/eduStudentEnroll0052", produces = "application/json;charset=UTF-8")
    @NoSignCrypto
    public void exportYwMbApplyInfo3(@RequestBody @Validated EduStudentEnrollQueryVO vo, HttpServletResponse response) {
        eduStudentEnrollIntegration.exportYwMbApplyInfo3(vo,response);
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育民办第三志愿摇号信息导入",description = "义务教育民办第三志愿摇号信息导入")
    @PostMapping(value = "/eduStudentEnroll0053", produces = "application/json;charset=UTF-8")
    public AppResponse<YwMbApplyFileVO> inputYwMbApplyInfo3(
            YwMbApplyFileVO vo, @RequestParam("file") MultipartFile file) throws IOException {
        return AppResponse.successData(eduStudentEnrollIntegration.inputYwMbApplyInfo3(vo, file));
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育民办第三志愿批量录取",description = "义务教育民办第三志愿批量录取")
    @PostMapping(value = "/eduStudentEnroll0054", produces = "application/json;charset=UTF-8")
    public AppResponse batchAdmit3(@RequestBody @Validated StudentEnrollBatchVO vo) {
        eduStudentEnrollIntegration.batchAdmit3(vo);
        return AppResponse.success();
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育民办第三志愿停止招生",description = "义务教育民办第三志愿停止招生")
    @PostMapping(value = "/eduStudentEnroll0055", produces = "application/json;charset=UTF-8")
    public AppResponse ywMbStop3(@RequestBody @Validated StudentEnrollStopVO vo) {
        eduStudentEnrollIntegration.ywMbStop3(vo);
        return AppResponse.success();
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育民办第三志愿审核",description = "义务教育民办第三志愿审核")
    @PostMapping(value = "/eduStudentEnroll0056", produces = "application/json;charset=UTF-8")
    public AppResponse ywMbAudit3(@RequestBody @Validated StudentEnrollSaveVO vo) {
        eduStudentEnrollIntegration.ywMbAudit3(vo);
        return AppResponse.success();
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育民办第三志愿录取",description = "义务教育民办第三志愿录取")
    @PostMapping(value = "/eduStudentEnroll0057", produces = "application/json;charset=UTF-8")
    public AppResponse ywMbApply3(@RequestBody @Validated StudentEnrollSaveVO vo) {
        eduStudentEnrollIntegration.ywMbApply3(vo);
        return AppResponse.success();
    }

    @Operation(summary = "获取义务教育民办第三志愿报名信息",description = "获取义务教育民办第三志愿报名信息")
    @PostMapping(value = "/eduStudentEnroll0058", produces = "application/json;charset=UTF-8")
    public AppResponse<PageInfo<EduStudentEnrollVO>> getYwMbApplyInfo3(@RequestBody @Validated EduStudentEnrollQueryVO vo) {
        return AppResponse.successData(eduStudentEnrollIntegration.getYwMbApplyInfo3(vo));
    }
    @Operation(summary = "获取义务教育公办报名信息",description = "获取义务教育公办报名信息")
    @PostMapping(value = "/eduStudentEnroll0042", produces = "application/json;charset=UTF-8")
    public AppResponse<PageInfo<EduStudentEnrollVO>> getYwGbApplyInfo(@RequestBody @Validated EduStudentEnrollQueryVO vo) {
        return AppResponse.successData(eduStudentEnrollIntegration.getYwGbApplyInfo(vo));
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育公办审核",description = "义务教育公办审核")
    @PostMapping(value = "/eduStudentEnroll0043", produces = "application/json;charset=UTF-8")
    public AppResponse ywGbAudit(@RequestBody @Validated StudentEnrollSaveVO vo) {
        eduStudentEnrollIntegration.ywGbAudit(vo);
        return AppResponse.success();
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育公办录取",description = "义务教育公办录取")
    @PostMapping(value = "/eduStudentEnroll0044", produces = "application/json;charset=UTF-8")
    public AppResponse ywGbApply(@RequestBody @Validated StudentEnrollSaveVO vo) {
        eduStudentEnrollIntegration.ywGbApply(vo);
        return AppResponse.success();
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育公办报名信息导出",description = "义务教育公办报名信息导出")
    @PostMapping(value = "/eduStudentEnroll0045", produces = "application/json;charset=UTF-8")
    @NoSignCrypto
    public void exportYwGbApplyInfo(@RequestBody @Validated EduStudentEnrollQueryVO vo, HttpServletResponse response) {
        eduStudentEnrollIntegration.exportYwGbApplyInfo(vo,response);
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育公办停止招生",description = "义务教育公办停止招生")
    @PostMapping(value = "/eduStudentEnroll0046", produces = "application/json;charset=UTF-8")
    public AppResponse ywGbStop(@RequestBody @Validated StudentEnrollStopVO vo) {
        eduStudentEnrollIntegration.ywGbStop(vo);
        return AppResponse.success();
    }

    @Operation(summary = "义务教育根据学校查下配置信息",description = "义务教育根据学校查下配置信息")
    @PostMapping(value = "/eduStudentEnroll0047", produces = "application/json;charset=UTF-8")
    public AppResponse<List<SchoolConfigVO>> querySchoolConfigBySchoolId(@RequestBody @Validated SchoolConfigQueryVO vo) {
        return AppResponse.successData(eduStudentEnrollIntegration.querySchoolConfigBySchoolId(vo));
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "义务教育学校新增报名信息",description = "义务教育学校新增报名信息")
    @PostMapping(value = "/eduStudentEnroll0048", produces = "application/json;charset=UTF-8")
    public AppResponse schoolAddEnroll(@RequestBody @Validated SaveStudentEnrollVO vo) {
        eduStudentEnrollIntegration.schoolAddEnroll(vo);
        return AppResponse.success();
    }

    @Operation(summary = "管理员查询摇号数据",description = "管理员查询摇号数据")
    @PostMapping(value = "/eduStudentEnroll0050", produces = "application/json;charset=UTF-8")
    public AppResponse<PageInfo<EduStudentEnrollVO>> getEnrollLottery(@RequestBody @Validated EduStudentEnrollQueryVO vo) {
        return AppResponse.successData(eduStudentEnrollIntegration.getEnrollLottery(vo));
    }

    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "管理员查询摇号数据导出",description = "管理员查询摇号数据导出")
    @PostMapping(value = "/eduStudentEnroll0051", produces = "application/json;charset=UTF-8")
    @NoSignCrypto
    public void exportEnrollLottery(@RequestBody @Validated EduStudentEnrollQueryVO vo, HttpServletResponse response) {
        eduStudentEnrollIntegration.exportEnrollLottery(vo,response);
    }

    @PostMapping(value = "/eduStudentEnroll0060", produces = "application/json;charset=UTF-8")
    @Operation(summary = "摇号导出人员缓存清除",description = "摇号导出人员缓存清除")
    public AppResponse clearEnrollLotteryCache(@RequestBody EduStudentEnrollQueryVO vo) {
        eduStudentEnrollIntegration.clearEnrollLotteryCache(vo);
        return AppResponse.success();
    }

    @PostMapping(value = "/eduStudentEnroll0061", produces = "application/json;charset=UTF-8")
    @Operation(summary = "义务段正式报名管理缓存清除",description = "义务段正式报名管理缓存清除")
    public AppResponse clearYwEnrollCache(@RequestBody EduStudentEnrollQueryVO vo) {
        eduStudentEnrollIntegration.clearYwEnrollCache(vo);
        return AppResponse.success();
    }


    @Idempotent(expire="PT2S") //2秒内防重复提交
    @Operation(summary = "学生线下录入学生修改",description = "学生线下录入学生修改")
    @PostMapping(value = "/eduStudentEnroll0062", produces = "application/json;charset=UTF-8")
    public AppResponse<EduStudentEnrollVO> editStudentEnrollBySchool(@RequestBody @Validated(value = {Validators.Edit.class}) SaveStudentEnrollVO vo) {
        return AppResponse.successData(eduStudentEnrollIntegration.editStudentEnrollBySchool(vo));
    }

}
